package org.example.day05;

/**
 * @author zlxad
 * @version 1.0
 * @description: TODO+
 * <p>  一根X米长的树木，伐木工切割成不同长度的木材后进行交易，交易价格为每根木头长度的乘积。规定切割后的每根木头长度都为正整数；也可以不切割，直接拿整根树木进行交易。请问伐木工如何尽量少的切割，才能使收益最大化？ </p> <p>  <br> </p> <p>  <br> </p> <p>  <br> </p>
 * <p>
 * 一根X米长的树木，伐木工切割成不同长度的木材后进行交易，交易价格为每根木头长度的乘积。
 * 规定切割后的每根木头长度都为正整数；也可以不切割，直接拿整根树木进行交易。请问伐木工如何尽量少的切割，才能使收益最大化？
 * @date 2024/3/11 15:22
 */
public class test086 {
    public static void main(String[] args) {
        System.out.println(maxProfit(10));
    }

    public static String maxProfit(int X) {
        // 如果木材长度小于等于4，直接返回该长度，因为不切割收益更大
        if (X <= 4) {
            return Integer.toString(X);
        }

        // 初始化结果变量
        StringBuilder result = new StringBuilder();

        // 尽量切割成长度为3的小段
        while (X > 4) {
            result.append("3 ");
            X -= 3;
        }

        // 最后剩余长度如果为1，我们将前面一个3和剩余的1组合成4，因为3*1<3+4
        if (X == 1) {
            result.replace(result.length() - 2, result.length(), "4");
        } else {
            // 剩余长度为2或3，直接添加到结果变量
            result.append(X);
        }

        // 返回结果变量
        return result.toString();
    }
}

